package com.wisdom.weld.common;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

public class Generator {


    /**
     * Mybatis代码生成信息
     * @return
     */
    public static List<GenerateInfo> createGenerateInfo(){
        List<GenerateInfo> generateInfos = new ArrayList<>();
        // 实体
        GenerateInfo entityInfo = new GenerateInfo();
        entityInfo.setTemplateName("Entity.ftl");
        entityInfo.setPrefix("");
        entityInfo.setSuffix(".java");
        entityInfo.setPath("$.generator.entity-info");
        generateInfos.add(entityInfo);
        // Condition实体
        GenerateInfo conditionInfo = new GenerateInfo();
        conditionInfo.setTemplateName("Condition.ftl");
        conditionInfo.setPrefix("");
        conditionInfo.setSuffix("Condition.java");
        conditionInfo.setPath("$.generator.condition-info");
        generateInfos.add(conditionInfo);
        // Mapper
        GenerateInfo mapperInfo = new GenerateInfo();
        mapperInfo.setTemplateName("Mapper.ftl");
        mapperInfo.setPrefix("");
        mapperInfo.setSuffix("Mapper.java");
        mapperInfo.setPath("$.generator.mapper-info");
        generateInfos.add(mapperInfo);
        // Mapper.xml
        GenerateInfo mapperXMLInfo = new GenerateInfo();
        mapperXMLInfo.setTemplateName("Mapper.xml.ftl");
        mapperXMLInfo.setPrefix("");
        mapperXMLInfo.setSuffix("Mapper.xml");
        mapperXMLInfo.setPath("$.generator.mapper-xml-info");
        mapperXMLInfo.setType("xml");
        generateInfos.add(mapperXMLInfo);

        return generateInfos;
    }

    /**
     * 通用Mapper代码生成信息
     * @return
     */
    public static List<GenerateInfo> createMapperGenerateInfo(){
        List<GenerateInfo> generateInfos = new ArrayList<>();
        // 实体
        GenerateInfo entityInfo = new GenerateInfo();
        entityInfo.setTemplateName("Mapper.Entity.ftl");
        entityInfo.setPrefix("");
        entityInfo.setSuffix(".java");
        entityInfo.setPath("$.generator.entity-info");
        generateInfos.add(entityInfo);
        // Condition实体
        // Mapper
        // Mapper.xml

        return generateInfos;
    }

    @Data
    public static class GenerateInfo {

        /**
         * 模版名称
         */
        private String templateName;
        /**
         * 文件前缀
         */
        private String prefix;
        /**
         * 文件后缀
         */
        private String suffix;
        /**
         * JsonPath 规则
         */
        private String path;
        private String type;
    }
}
